package kn.webstd.g4g.business;

import java.util.List;

import kn.webstd.g4g.commons.dts.ActivityDts;
import kn.webstd.g4g.commons.dts.BUDts;
import kn.webstd.g4g.commons.dts.GraphicDts;
import kn.webstd.g4g.commons.dts.HighlightsDts;
import kn.webstd.g4g.commons.dts.IniciativeDts;
import kn.webstd.g4g.commons.dts.LowlightsDts;
import kn.webstd.g4g.commons.dts.ObjectiveDts;
import kn.webstd.g4g.commons.dts.PlanningDts;
import kn.webstd.g4g.commons.dts.StatusDashboardDts;
import kn.webstd.g4g.commons.dts.StatusDts;
import kn.webstd.g4g.commons.dts.UrgencyDts;
import kn.webstd.g4g.commons.dts.UsersDts;
import kn.webstd.tools.business.IService;
import kn.webstd.tools.business.security.IAuthorizationManager.PermitAll;

@PermitAll
public interface IBUService extends IService {
	public BUDts getBU(BUDts bu);
	public List<BUDts> getAllBUS();
	public List<BUDts> getAllBUByStatus(StatusDts period);
	public BUDts saveDashboard(
			UsersDts user,
			List<PlanningDts> p,
			List<UrgencyDts> uNows,
			List<UrgencyDts> uPast,
			List<IniciativeDts> i,
			List<HighlightsDts> h,
			List<LowlightsDts> l);
	public BUDts submitDashboard(
			UsersDts user,
			List<PlanningDts> p,
			List<UrgencyDts> uNows,
			List<UrgencyDts> uPast,
			List<IniciativeDts> i,
			List<HighlightsDts> h,
			List<LowlightsDts> l);
	public BUDts voboDashboard(
			UsersDts user,
			List<PlanningDts> p,
			List<UrgencyDts> uNows,
			List<UrgencyDts> uPast,
			List<IniciativeDts> i,
			List<HighlightsDts> h,
			List<LowlightsDts> l,
			List<ObjectiveDts> obred);
	public StatusDashboardDts getStatusDashboardByBuAndStatus(StatusDashboardDts statusDashboard);
	public StatusDashboardDts saveStatusDashboard(StatusDashboardDts statusDashboard);
	public StatusDashboardDts updateStatusDashboard(StatusDashboardDts statusDashboard);
	public StatusDashboardDts saveUserStatusDashboard(StatusDashboardDts statusDashboard);
	public StatusDashboardDts updateUserStatusDashboard(StatusDashboardDts statusDashboard);
	public BUDts calculateGAP(BUDts bu, UsersDts user, StatusDts period);
	public List<BUDts> getAllBU();
	public List<GraphicDts> generateBUGraphic(StatusDts initStatus, StatusDts endStatus, BUDts bu);
	
	
	
	
	public List<BUDts> getAllBuByResponsible(UsersDts userDts);
	void sendMailSemaphoreRed(List<ObjectiveDts> objetives) throws IllegalArgumentException;
}